/*	This file is part of AstroAttack.
*
*	AstroAttack is free software; you can redistribute it and/or modify
*	it under the terms of the GNU General Public License as published by
*	the Free Software Foundation; either version 2 of the License, or
*	(at your option) any later version.
*	
*	AstroAttack is distributed in the hope that it will be useful,
*	but WITHOUT ANY WARRANTY; without even the implied warranty of
*	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*	GNU General Public License for more details.
*	
*	You should have received a copy of the GNU General Public License
*	along with AstroAttack; if not, write to the Free Software
*	Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*	
*	$Id: Alien.java 64 2007-01-06 03:30:23Z xdracox $
*/

/**	The AstroAttack package contains all the classes that belong to the
*	AstroAttack program.
*/
package AstroAttack;

import java.awt.Image;
import java.awt.geom.Point2D;


public class Alien extends Entity
{
	public enum Movement
	{ BLOCK, DIAGONAL, RANDOM, CIRCLES };
	
	public enum Shoot
	{ ANGLED, STRAIGHT, MULTIPLE };
	
	private Movement m_moves;
	private Shoot m_shoots;
	private int health, status, enterPos;
	private boolean attacks, entered;
	private BulletType bt;
	
	public Alien(Image p_img, Point2D p_pt, int direction, int speed, Movement p_moves, Shoot p_shoots, int p_health, int p_enter, boolean canAttack)
	{
		super(p_img, p_pt, 10);
		
		setSpeed((double)speed);
		setDirection((double)direction);
		
		m_moves = p_moves;
		m_shoots = p_shoots;
		health = p_health;
		status = -1;
		attacks = canAttack;
		entered = true;
		enterPos = p_enter;
	}
	public Movement getMovement()
	{
		return m_moves;
	}
	public Shoot getShoot()
	{
		return m_shoots;
	}
	public BulletType getBulletType()
	{
		return bt;
	}
	public int getStatus()
	{
		return status;
	}
	public int getEnterPosition()
	{
		return enterPos;
	}
	public void setStatus(int newStatus)
	{
		status = newStatus;
	}
	public boolean canAttack()
	{
		return attacks;
	}
	public boolean hasEntered()
	{
		return entered;
	}
	public void entered()
	{
		entered = true;
	}
}